package com.ruoyi.ora.util;

import com.ruoyi.ora.domain.AssetsComment;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class TreeBuilderUtil {

    /**
     * 构建评论树形结构
     * @param comments 原始评论列表
     * @return 树形结构的评论列表（只包含parentId=0的顶级评论）
     */
    public List<AssetsComment> buildCommentTree(List<AssetsComment> comments) {
        // 1. 获取所有顶级评论（parentId=0）
        List<AssetsComment> topLevelComments = comments.stream()
                .filter(comment -> comment.getParentId() == 0)
                .collect(Collectors.toList());

        // 2. 为每个顶级评论递归查找子评论
        for (AssetsComment comment : topLevelComments) {
            comment.setChildrens(findChildren(comment, comments));
        }

        return topLevelComments;
    }

    /**
     * 递归查找子评论
     * @param parent 父评论
     * @param allComments 所有评论列表
     * @return 该父评论的子评论列表
     */
    private List<AssetsComment> findChildren(AssetsComment parent, List<AssetsComment> allComments) {
        List<AssetsComment> children = new ArrayList<>();

        // 查找所有parentId等于当前评论id的评论
        for (AssetsComment comment : allComments) {
            if (comment.getParentId().equals(parent.getId())) {
                // 递归查找子评论的子评论
                comment.setChildrens(findChildren(comment, allComments));
                children.add(comment);
            }
        }

        return children;
    }

}
